Android JSONObject 与 GSON
全部标签 我正在使用有时包含子对象列表的API:{'obj':{children:[{id:"1"},{id:"2"}]}}我可以解析这个没问题。但如果只有一个child,它不会将其作为列表返回:{'obj':{children:{id:"1"}}}我的解析器期望一个列表然后中断。有人对如何处理这个问题有建议吗? 最佳答案 对于Gson,我知道如何处理这种情况的唯一方法是使用自定义反序列化器。例如://outputs://[Container:obj=[ChildContainer:children=[[Child:id=1],[Child:
我目前正在学习一个教程来帮助我了解JavaFX的工作原理,并且在教程中他们正在构建一个小应用程序来管理人们的信息。本教程还使用XML进行加载/保存,但我不想使用XML,而是想使用JSON。我有一个使用StringProperty、IntegerProperty和ObjectProperty的Person模型。我的问题是,我不确定加载和保存它的最佳方式是什么而不保存不必要的字段并且加载时Gson不会抛出错误。人importjava.time.LocalDate;importjavafx.beans.property.IntegerProperty;importjavafx.beans.p
优化反序列化的最佳方法是什么?我目前正在使用标准的Gson.toJson和Gson.fromJson方法对一些复杂对象进行序列化和反序列化,我希望尽可能减少反序列化时间。如果重要的话,我的对象中最复杂的包含43个变量。 最佳答案 如果你想使用Gson,而不是切换到另一个Java-to/from-JSONAPI,并且如果Gson的自动数据绑定(bind)性能不够好,那么可以继续使用GsonAPI,并且挤出一些适度更好的性能。在https://github.com/eishay/jvm-serializers/wiki发布的最新一轮性能
我有一个包含任意json的字符串对象。我想将它包装在另一个json对象中,如下所示:{version:1,content:>>arbitrary_json_string_object我如何才能可靠地将我的json字符串作为属性添加到它而无需手动构建它(即避免繁琐的字符串连接)?classWrapper{intversion=1;}gson.toJson(newWrapper())//Thenwhat?请注意,添加的json应该不被转义,而是作为有效的json实体作为包装器的一部分,如下所示:{version:1,content:["thecontent",{name:"fromtheS
我使用GoogleGsonAPI构建JSON。当我初始化一个JsonObject时:JsonObjectjson=newJsonObject();并打印出来,它实际上是{}。我试图排除“空”JSON,即未添加任何属性的{}。但是我在GsonAPI中找不到类似isEmpty()的方法。如何使用GsonAPI找出“空”JSON? 最佳答案 您可以使用JsonObject#entrySet()获取JSON对象的名称/值对集(其成员)。这将返回一个Set,它具有您正在寻找的传统isEmpty()方法。例如,JsonObjectjsonObj
我正在尝试使用Gson反序列化一个json数组,但目前我收到了一个JsonSyntaxException。json字符串是由.NETMVC3Web服务使用JsonResult创建的(意思是,我不是手动创建json,它是由我知道可以在其他几个平台上工作的库创建的)。这是json:[{"PostID":1,"StudentID":39,"StudentName":"JoeBlow","Text":"Testmessage.","CreateDate":"\/Date(1350178408267)\/","ModDate":"\/Date(1350178408267)\/","Comment
我正在开发一个使用Gson作为JSON反序列化器并需要从RESTAPI反序列化多态JSON的应用程序。在解释mi问题之前请注意,我已经在研究Gson的多态反序列化,并已在多个案例中成功实现。所以这是我遇到的一个具体问题。我也读过thisgreatpost和thisStackOverflowdiscussion在问这个之前。我正在使用RuntimeTypeAdapterFactory顺便反序列化多态对象。问题我遇到的问题显然是GSON的RuntimeTypeAdapterFactory不允许声明在层次结构中指定对象类型的字段。我将用一些代码进一步解释。我有以下pojos结构(为简单起见减
我有我的自定义类User:classUser{publicStringname;publicintid;publicAddressaddress;publicTimestampcreated;}我现在正在为User.class创建自定义JsonSerializer:@OverridepublicJsonElementserialize(Usersrc,TypetypeOfSrc,JsonSerializationContextcontext){JsonObjectobj=newJsonObject();obj.addProperty("name",src.name);obj.addPr
当我们定义一个具有以下格式的类时publicclassField{@SerializedName("name")publicStringname;@SerializedName("category")publicStringcategory;}对于JsonObject内容{"name":"string","category":"string",}并使用Gson解析内容Fieldfield=newGsonBuilder().create().fromJson(content,Field.class);所以,我的问题是我们可以使用Gson来获取@Serialized名称吗?因为在这种情况下
我有一个JSON字符串,如下所示:{"altruism":1,"amazon":6}我想要的是一个HashMap之后有两个条目。Key:altruismValue:1Key:amazonValue:6我真的不知道该怎么做。通常有从JSON字符串解析的对象,但这里不是这种情况。 最佳答案 Gson使您尝试做的事情相对容易。以下是一个工作示例。//input:{"altruism":1,"amazon":6}StringjsonInput="{\"altruism\":1,\"amazon\":6}";Mapmap=newGson().